<?php

/**
 * ECSHOP 商品分类管理程序
 * ============================================================================
 * * 版权所有 2005-2012 上海商派网络科技有限公司，并保留所有权利。
 * 网站地址: http://www.ecshop.com；
 * ----------------------------------------------------------------------------
 * 这不是一个自由软件！您只能在不用于商业目的的前提下对程序代码进行修改和
 * 使用；不允许对程序代码以任何形式任何目的的再发布。
 * ============================================================================
 * $Author: liubo $
 * $Id: category.php 17217 2011-01-19 06:29:08Z liubo $
*/

define('IN_ECS', true);

require(dirname(__FILE__) . '/includes/init.php');
$exc = new exchange($ecs->table("category"), $db, 'cat_id', 'cat_name');

/* act操作项的初始化 */
if (empty($_REQUEST['act']))
{
    $_REQUEST['act'] = 'list';
}
else
{
    $_REQUEST['act'] = trim($_REQUEST['act']);
}

/*------------------------------------------------------ */
//-- 商品分类列表
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'list')
{
    /* 获取分类列表 */
    // $cat_list = cat_list(0, 0, false);
    $sql="SELECT * FROM " . $ecs->table('category') ;
    $cat_list = $db->getAll($sql);
//     echo "<pre>";
//     print_r($cat_list);
//     echo "</pre>";
// die();
    /* 模板赋值 */
    $smarty->assign('ur_here',      $_LANG['03_category_list']);
    $smarty->assign('action_link',  array('href' => 'category.php?act=add', 'text' => $_LANG['04_category_add']));
    $smarty->assign('full_page',    1);

    $smarty->assign('cat_info',     $cat_list);
    // echo "<pre>";
    // print_r($cat_list);
    // echo  "</pre>";
    // die("555");

    /* 列表页面 */
    assign_query_info();
    $smarty->display('category_list.htm');
}

/*------------------------------------------------------ */
//-- 排序、分页、查询
/*------------------------------------------------------ */
elseif ($_REQUEST['act'] == 'query')
{
    $cat_list = cat_list(0, 0, false);
    $smarty->assign('cat_info',     $cat_list);

    make_json_result($smarty->fetch('category_list.htm'));
}
/*------------------------------------------------------ */
//-- 添加商品分类
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'add')
{
    /* 权限检查 */
    admin_priv('cat_manage');



    /* 模板赋值 */
    $smarty->assign('ur_here',      $_LANG['04_category_add']);
    $smarty->assign('action_link',  array('href' => 'category.php?act=list', 'text' => $_LANG['03_category_list']));
    // $smarty->assign('cat_select',   cat_list(0, 0, true));
    $smarty->assign('form_act',     'insert');
    $smarty->assign('cat_info',     array('is_show' => 1));




    /* 显示页面 */
    assign_query_info();
    $smarty->display('category_info.htm');
}

/*------------------------------------------------------ */
//-- 商品分类添加时的处理
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'insert')
{
    /* 权限检查 */
    admin_priv('cat_manage');

   /* 初始化变量 */
    // $cat['cat_id']       = !empty($_POST['cat_id'])       ? intval($_POST['cat_id'])     : 0;
    $cat['cat_name']     = !empty($_POST['cat_name'])     ? trim($_POST['cat_name'])     : '';

    $cat['sort_order']   = !empty($_POST['sort_order'])   ? intval($_POST['sort_order']) : 0;

    $cat['is_show']      = !empty($_POST['is_show'])      ? intval($_POST['is_show'])    : 0;

    $cat['show_in_nav']  = !empty($_POST['show_in_nav'])  ? intval($_POST['show_in_nav']): 0;

    $cat['cat_recommend']  = !empty($_POST['cat_recommend'])  ? $_POST['cat_recommend'] : array();

     $cat['cat_desc']     = !empty($_POST['cat_desc'])     ? $_POST['cat_desc']           : '';

    //  if(!empty($_FILES['goods_img'])){

    //             $img_type = $_FILES['goods_img']['type'];//上传文件格式
    //             $img_size = $_FILES['goods_img']['size'];//上传文件大小

    //             $sparr = Array("image/pjpeg", "image/jpeg", "image/gif", "image/png", "image/xpng", "image/wbmp");
    //             if(in_array($img_type, $sparr) && ($img_size / 1024 < 100)){
    //                 $path='images/';
    //                 $filename=explode(".",$_FILES['goods_img']['name']);
    //                 $imgname=date('Ymdtis').rand(10,99).'.'.$filename[1];
    //                 $target_path=$path.$imgname;
    //                 if (!file_exists($path)) mkdir($path);
    //                 /*move_up..函数用于将服务器上的临时文件移动到指定目录下，tmp_name就是临时文件的名字*/
    //                 move_uploaded_file($_FILES['goods_img']['tmp_name'], $target_path);  
    //                 if(file_exists($target_path)) {
    //                     $photos='images/'.$imgname;
    //                 }
    //             }else{
    //                  echo '<script>alert("上传失败~");history.go(-1);</script>';  
    //                  die();
    //             }
    // }
    $php_maxsize = ini_get('upload_max_filesize');
    $htm_maxsize = '200M';
    
    $sparr = Array("image/pjpeg", "image/jpeg", "image/gif", "image/png", "image/xpng", "image/wbmp");
    if ($_FILES['goods_img']['error'] == 0)
    {

        if (!in_array($_FILES['goods_img']['type'],$sparr))
        {
            sys_msg("活动图片格式不正确！", 1, array(), false);
        }
        
    }
    elseif ($_FILES['goods_img']['error'] == 1)
    {
        sys_msg(sprintf("活动图片文件太大了（最大值：%s），无法上传。", $php_maxsize), 1, array(), false);
    }
    elseif ($_FILES['goods_img']['error'] == 2)
    {
        sys_msg(sprintf("活动图片文件太大了（最大值：%s），无法上传。", $htm_maxsize), 1, array(), false);
    }
    /*活动图片处理 */
    $cat_img = '';
    if(!empty($_FILES['goods_img']['name'])){
        
        $path = 'upload/'.date('Ymd').'/';
        $filename = explode(".",$_FILES['goods_img']['name']);
        $imgname = date('Ymdtis').rand(10,99).'.'.$filename[1];
        $target_path = $path.$imgname;
        if (!file_exists($path)) mkdir($path);
        move_uploaded_file($_FILES['goods_img']['tmp_name'], $target_path);  
        if(file_exists($target_path)) {
            
            $cat_img ='upload/'.date('Ymd').'/'.$imgname;
                
        }
    }
    /*$cat['cat_img']=$activity_img;*/
            
    $cat['keywords']     = !empty($_POST['keywords'])     ? trim($_POST['keywords'])     : '';

    $cat['cat_desc']     = !empty($_POST['cat_desc'])     ? $_POST['cat_desc']           : '';
     $cat_img      = $cat_img;   // 商品图片

    /* 检查活动分类名称是否重复 */
        if ($_POST['cat_name'])
        {
            $sql = "SELECT COUNT(*) FROM " . $ecs->table('category') .
                    " WHERE cat_name = '$_POST[cat_name]' ";
            if ($db->getOne($sql) > 0)
            {
                sys_msg($_LANG['catname_exist'], 1, array(), false);
            }
        }

    // /* 入库的操作 */
    $sql = "INSERT INTO " .$GLOBALS['ecs']->table('category'). " (cat_name, keywords,  cat_img, show_in_nav, is_show, sort_order, cat_desc)". "VALUES ('$cat[cat_name]', '$cat[keywords]',  '$cat_img', '$cat[show_in_nav]', '$cat[is_show]', '$cat[sort_order]', '$cat[cat_desc]') ";
    $GLOBALS['db']->query($sql);

    sys_msg($_LANG['catadd_succed'], 0, $link);

   
 }

/*------------------------------------------------------ */
//-- 编辑商品分类信息
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'edit')
{
    admin_priv('cat_manage');   // 权限检查

   $cat_id = intval($_REQUEST['cat_id']);
    $cat_info = get_cat_info($cat_id); 
    // echo "<pre>";
    // print_r($cat_info);
    // echo "</pre>";
    // die();
    //  // 查询分类信息数据
    // $attr_list = get_attr_list();
    // $filter_attr_list = array();

    // 取得商品属性
   
    $smarty->assign('ur_here',     $_LANG['category_edit']);
    $smarty->assign('action_link', array('text' => $_LANG['03_category_list'], 'href' => 'category.php?act=list'));

    //分类是否存在首页推荐
    $res = $db->getAll("SELECT recommend_type FROM " . $ecs->table("cat_recommend") . " WHERE cat_id=" . $cat_id);
    if (!empty($res))
    {
        $cat_recommend = array();
        foreach($res as $data)
        {
            $cat_recommend[$data['recommend_type']] = 1;
        }
        $smarty->assign('cat_recommend', $cat_recommend);
    }

    $smarty->assign('cat_info',    $cat_info);
    $smarty->assign('form_act',    'update');
    // $smarty->assign('cat_select',  cat_list(0, $cat_info['parent_id'], true));
    // $smarty->assign('goods_type_list',  goods_type_list(0)); // 取得商品类型

 
    /* 显示页面 */
    assign_query_info();
    $smarty->display('category_info.htm');
}

elseif($_REQUEST['act'] == 'add_category')
{
    $parent_id = empty($_REQUEST['parent_id']) ? 0 : intval($_REQUEST['parent_id']);
    $category = empty($_REQUEST['cat']) ? '' : json_str_iconv(trim($_REQUEST['cat']));

    if(cat_exists($category, $parent_id))
    {
        make_json_error($_LANG['catname_exist']);
    }
    else
    {
        $sql = "INSERT INTO " . $ecs->table('category') . "(cat_name,  is_show)" .
               "VALUES ( '$category', 1)";

        $db->query($sql);
        $category_id = $db->insert_id();

        $arr = array("parent_id"=>$parent_id, "id"=>$category_id, "cat"=>$category);

        clear_cache_files();    // 清除缓存

        make_json_result($arr);
    }
}

/*------------------------------------------------------ */
//-- 编辑商品分类信息
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'update')
{
    /* 权限检查 */
    admin_priv('cat_manage');

    /* 初始化变量 */
    $cat_id              = !empty($_POST['cat_id'])       ? intval($_POST['cat_id'])     : 0;
    
    $cat['keywords']     = !empty($_POST['keywords'])     ? trim($_POST['keywords'])     : '';
    // $cat['cat_desc']     = !empty($_POST['cat_desc'])     ? $_POST['cat_desc']           : '';
    // $cat['measure_unit'] = !empty($_POST['measure_unit']) ? trim($_POST['measure_unit']) : '';
    $cat['cat_name']     = !empty($_POST['cat_name'])     ? trim($_POST['cat_name'])     : '';
    $cat['is_show']      = !empty($_POST['is_show'])      ? intval($_POST['is_show'])    : 0;

    // $cat['cat_recommend']  = !empty($_POST['cat_recommend'])  ? $_POST['cat_recommend'] : array();

    // if(!empty($_FILES['goods_img'])){

    //             $img_type = $_FILES['goods_img']['type'];//上传文件格式
    //             $img_size = $_FILES['goods_img']['size'];//上传文件大小

    //             $sparr = Array("image/pjpeg", "image/jpeg", "image/gif", "image/png", "image/xpng", "image/wbmp");
    //             if(in_array($img_type, $sparr) && ($img_size / 1024 < 100)){
    //                 $path='images/';
    //                 $filename=explode(".",$_FILES['goods_img']['name']);
    //                 $imgname=date('Ymdtis').rand(10,99).'.'.$filename[1];
    //                 $target_path=$path.$imgname;
    //                 if (!file_exists($path)) mkdir($path);
    //                 /*move_up..函数用于将服务器上的临时文件移动到指定目录下，tmp_name就是临时文件的名字*/
    //                 move_uploaded_file($_FILES['goods_img']['tmp_name'], $target_path);  
    //                 if(file_exists($target_path)) {
    //                     $photos='images/'.$imgname;
    //                 }
    //             }else{
    //                  echo '<script>alert("上传失败~");history.go(-1);</script>';  
    //                  die();
    //             }
    // }
    /*处理活动分类图片 检查图片：如果有错误，检查尺寸是否超过最大值；否则，检查文件类型 */
    // 最大上传文件大小
    $php_maxsize = ini_get('upload_max_filesize');
    $htm_maxsize = '200M';
    
    $sparr = Array("image/pjpeg", "image/jpeg", "image/gif", "image/png", "image/xpng", "image/wbmp");
    if ($_FILES['goods_img']['error'] == 0)
    {

        if (!in_array($_FILES['goods_img']['type'],$sparr))
        {
            sys_msg("活动图片格式不正确！", 1, array(), false);
        }
        
    }
    elseif ($_FILES['goods_img']['error'] == 1)
    {
        sys_msg(sprintf("活动图片文件太大了（最大值：%s），无法上传。", $php_maxsize), 1, array(), false);
    }
    elseif ($_FILES['goods_img']['error'] == 2)
    {
        sys_msg(sprintf("活动图片文件太大了（最大值：%s），无法上传。", $htm_maxsize), 1, array(), false);
    }
    /*活动图片处理 */
    $activity_img = '';
    if(!empty($_FILES['goods_img']['name'])){
        
        $path = 'upload/'.date('Ymd').'/';
        $filename = explode(".",$_FILES['goods_img']['name']);
        $imgname = date('Ymdtis').rand(10,99).'.'.$filename[1];
        $target_path = $path.$imgname;
        if (!file_exists($path)) mkdir($path);
        move_uploaded_file($_FILES['goods_img']['tmp_name'], $target_path);  
        if(file_exists($target_path)) {
            
            $activity_img ='upload/'.date('Ymd').'/'.$imgname;
                
        }
    }
    $cat['cat_img']=$activity_img;
    
    
    // $dat = $db->getRow("SELECT cat_name, show_in_nav FROM ". $ecs->table('category') . " WHERE cat_id = '$cat_id'");

        $sql = "UPDATE " .$ecs->table('category'). " SET 
                cat_name = '$cat[cat_name]' ,  
                keywords = '$cat[keywords] ', 
                cat_img = '$cat[cat_img]'                          
                WHERE cat_id = '$_REQUEST[cat_id]'";
        $GLOBALS['db']->query($sql);  
       

        /* 更新分类信息成功 */
        clear_cache_files(); // 清除缓存
        admin_log($_POST['cat_name'], 'edit', 'category'); // 记录管理员操作

        /* 提示信息 */
        $link[] = array('text' => $_LANG['back_list'], 'href' => 'category.php?act=list');
        sys_msg($_LANG['catedit_succed'], 0, $link);
 
}

/*------------------------------------------------------ */
//-- 批量转移商品分类页面
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'move')
{
    /* 权限检查 */
    admin_priv('cat_drop');


    /* 显示页面 */
    assign_query_info();
    $smarty->display('category_move.htm');
}

/*------------------------------------------------------ */
//-- 处理批量转移商品分类的处理程序
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'move_cat')
{
    /* 权限检查 */
    admin_priv('cat_drop');

    $cat_id        = !empty($_POST['cat_id'])        ? intval($_POST['cat_id'])        : 0;
    $target_cat_id = !empty($_POST['target_cat_id']) ? intval($_POST['target_cat_id']) : 0;

    /* 商品分类不允许为空 */
    if ($cat_id == 0 || $target_cat_id == 0)
    {
        $link[] = array('text' => $_LANG['go_back'], 'href' => 'category.php?act=move');
        sys_msg($_LANG['cat_move_empty'], 0, $link);
    }

    /* 更新商品分类 */
    // $sql = "UPDATE " .$ecs->table('goods'). " SET cat_id = '$target_cat_id' ".
    //        "WHERE cat_id = '$cat_id'";
    // if ($db->query($sql))
    // {
    //     /* 清除缓存 */
    //     clear_cache_files();

    //     /* 提示信息 */
    //     $link[] = array('text' => $_LANG['go_back'], 'href' => 'category.php?act=list');
    //     sys_msg($_LANG['move_cat_success'], 0, $link);
    // }
}

/*------------------------------------------------------ */
//-- 编辑排序序号
/*------------------------------------------------------ */

if ($_REQUEST['act'] == 'edit_sort_order')
{
    check_authz_json('cat_manage');

    $id = intval($_POST['id']);
    $val = intval($_POST['val']);

    if (cat_update($id, array('sort_order' => $val)))
    {
        clear_cache_files(); // 清除缓存
        make_json_result($val);
    }
    else
    {
        make_json_error($db->error());
    }
}



/*------------------------------------------------------ */
//-- 编辑排序序号
/*------------------------------------------------------ */

if ($_REQUEST['act'] == 'edit_grade')
{
    check_authz_json('cat_manage');

    $id = intval($_POST['id']);
    $val = intval($_POST['val']);

    if($val > 10 || $val < 0)
    {
        /* 价格区间数超过范围 */
        make_json_error($_LANG['grade_error']);
    }

    if (cat_update($id, array('grade' => $val)))
    {
        clear_cache_files(); // 清除缓存
        make_json_result($val);
    }
    else
    {
        make_json_error($db->error());
    }
}


/*------------------------------------------------------ */
//-- 切换是否显示
/*------------------------------------------------------ */

if ($_REQUEST['act'] == 'toggle_is_show')
{
    check_authz_json('cat_manage');

    $id = intval($_POST['id']);
    $val = intval($_POST['val']);

    if (cat_update($id, array('is_open' => $val)) != false)
    {
        clear_cache_files();
        make_json_result($val);
    }
    else
    {
        make_json_error($db->error());
    }
}

/*------------------------------------------------------ */
//-- 删除商品分类
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'remove')
{
    check_authz_json('cat_manage');

    /* 初始化分类ID并取得分类名称 */
    $cat_id   = intval($_GET['id']);
    $cat_name = $db->getOne('SELECT cat_name FROM ' .$ecs->table('category'). " WHERE cat_id='$cat_id'");

    /* 当前分类下是否有子分类 */
    // $cat_count = $db->getOne('SELECT COUNT(*) FROM ' .$ecs->table('category'). " WHERE parent_id='$cat_id'");

    /* 当前分类下是否存在商品 */
    // $goods_count = $db->getOne('SELECT COUNT(*) FROM ' .$ecs->table('goods'). " WHERE cat_id='$cat_id'");

    /* 如果不存在下级子分类和商品，则删除之 */
    // if ($cat_count == 0 && $goods_count == 0)
    // {
        /* 删除分类 */
        $sql = 'DELETE FROM ' .$ecs->table('category'). " WHERE cat_id = '$cat_id'";
        if ($db->query($sql))
        {
            $db->query("DELETE FROM " . $ecs->table('nav') . "WHERE ctype = 'c' AND cid = '" . $cat_id . "' AND type = 'middle'");
            clear_cache_files();
            admin_log($cat_name, 'remove', 'category');
        }
    // }
    // else
    // {
        // make_json_error($cat_name .' '. $_LANG['cat_isleaf']);
    // }

    $url = 'category.php?act=query&' . str_replace('act=remove', '', $_SERVER['QUERY_STRING']);

    ecs_header("Location: $url\n");
    exit;
}

/*------------------------------------------------------ */
//-- PRIVATE FUNCTIONS
/*------------------------------------------------------ */
//
///**
// * 检查分类是否已经存在
// *
// * @param   string      $cat_name       分类名称
// * @param   integer     $parent_cat     上级分类
// * @param   integer     $exclude        排除的分类ID
// *
// * @return  boolean
// */
//function cat_exists($cat_name, $parent_cat, $exclude = 0)
//{
//    $sql = "SELECT COUNT(*) FROM " .$GLOBALS['ecs']->table('category').
//           " WHERE parent_id = '$parent_cat' AND cat_name = '$cat_name' AND cat_id<>'$exclude'";
//    return ($GLOBALS['db']->getOne($sql) > 0) ? true : false;
//}

/**
 * 获得商品分类的所有信息
 *
 * @param   integer     $cat_id     指定的分类ID
 *
 * @return  mix
 */
function get_cat_info($cat_id)
{
    $sql = "SELECT * FROM " .$GLOBALS['ecs']->table('category'). " WHERE cat_id='$cat_id' LIMIT 1";
    return $GLOBALS['db']->getRow($sql);
}

/**
 * 添加商品分类
 *
 * @param   integer $cat_id
 * @param   array   $args
 *
 * @return  mix
 */
function cat_update($cat_id, $args)
{
    if (empty($args) || empty($cat_id))
    {
        return false;
    }

    return $GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('category'), $args, 'update', "cat_id='$cat_id'");
}


/**
 * 获取属性列表
 *
 * @access  public
 * @param
 *
 * @return void
 */
function get_attr_list()
{
    // $sql = "SELECT a.attr_id, a.cat_id, a.attr_name ".
    //        " FROM " . $GLOBALS['ecs']->table('attribute'). " AS a,  ".
    //        $GLOBALS['ecs']->table('goods_type') . " AS c ".
    //        " WHERE  a.cat_id = c.cat_id AND c.enabled = 1 ".
    //        " ORDER BY a.cat_id , a.sort_order";

    // $arr = $GLOBALS['db']->getAll($sql);

    $list = array();

    // foreach ($arr as $val)
    // {
    //     $list[$val['cat_id']][] = array($val['attr_id']=>$val['attr_name']);
    // }

    return $list;
}

/**
 * 插入首页推荐扩展分类
 *
 * @access  public
 * @param   array   $recommend_type 推荐类型
 * @param   integer $cat_id     分类ID
 *
 * @return void
 */
function insert_cat_recommend($recommend_type, $cat_id)
{
    //检查分类是否为首页推荐
    if (!empty($recommend_type))
    {
        // //取得之前的分类
        // $recommend_res = $GLOBALS['db']->getAll("SELECT recommend_type FROM " . $GLOBALS['ecs']->table("cat_recommend") . " WHERE cat_id=" . $cat_id);
        // if (empty($recommend_res))
        // {
        //     foreach($recommend_type as $data)
        //     {
        //         $data = intval($data);
        //         $GLOBALS['db']->query("INSERT INTO " . $GLOBALS['ecs']->table("cat_recommend") . "(cat_id, recommend_type) VALUES ('$cat_id', '$data')");
        //     }
        // }
        // else
        // {
        //     $old_data = array();
        //     foreach($recommend_res as $data)
        //     {
        //         $old_data[] = $data['recommend_type'];
        //     }
        //     $delete_array = array_diff($old_data, $recommend_type);
        //     if (!empty($delete_array))
        //     {
        //         $GLOBALS['db']->query("DELETE FROM " . $GLOBALS['ecs']->table("cat_recommend") . " WHERE cat_id=$cat_id AND recommend_type " . db_create_in($delete_array));
        //     }
        //     $insert_array = array_diff($recommend_type, $old_data);
        //     if (!empty($insert_array))
        //     {
        //         foreach($insert_array as $data)
        //         {
        //             $data = intval($data);
        //             $GLOBALS['db']->query("INSERT INTO " . $GLOBALS['ecs']->table("cat_recommend") . "(cat_id, recommend_type) VALUES ('$cat_id', '$data')");
        //         }
        //     }
        // }
    }
    else
    {
        // $GLOBALS['db']->query("DELETE FROM ". $GLOBALS['ecs']->table("cat_recommend") . " WHERE cat_id=" . $cat_id);
    }
}

?>